package persistencia.entidades;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.SequenceGenerator;
import javax.validation.constraints.NotNull;

/**
 * Entidade que controlara o Login de usuários.
 * 
 * @author Maciel Melo
 * @since 09/11/2013
 */
@Entity(name = "login")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Login {

	@Id
	@SequenceGenerator(sequenceName = "public.seq_login", name = "seq_login", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_login")
	private Long id;

	@NotNull
	private String nome;

	@NotNull
	@Column(unique = true)
	private String email;

	@NotNull
	private String senha;

	@NotNull
	private Integer regra;

	/**
	 * Instantiates a new login.
	 */
	public Login() {

	}

	/**
	 * Instantiates a new login.
	 * 
	 * @param user
	 *            the user
	 */
	public Login(Login user) {
		id = user.getId();
		nome = user.getNome();
		email = user.getEmail();
		senha = user.getSenha();
	}

	@SuppressWarnings("javadoc")
	public Login(Long id, String nome, String email, String senha, int regra) {
		this.id = id;
		this.nome = nome;
		this.email = email;
		this.senha = senha;
		this.regra = regra;
	}

	/**
	 * Gets the id.
	 * 
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * Sets the id.
	 * 
	 * @param id
	 *            the new id
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * Gets the nome.
	 * 
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Sets the nome.
	 * 
	 * @param nome
	 *            the new nome
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * Gets the email.
	 * 
	 * @return the email
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * Sets the email.
	 * 
	 * @param email
	 *            the new email
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * Gets the senha.
	 * 
	 * @return the senha
	 */
	public String getSenha() {
		return senha;
	}

	/**
	 * Sets the senha.
	 * 
	 * @param senha
	 *            the new senha
	 */
	public void setSenha(String senha) {
		this.senha = senha;
	}

	/**
	 * Gets the regra.
	 * 
	 * @return the regra
	 */
	public int getRegra() {
		return regra;
	}

	/**
	 * Sets the regra.
	 * 
	 * @param regra
	 *            the regra to set
	 */
	public void setRegra(int regra) {
		this.regra = regra;
	}

}